package com.zhilifang.modules.zlf.utils;

import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.UUID;

public class Utils {
	
	/**
	 * 创建用户id，uuid为用户id
	 */
	public static String getCreateUUid(){
		String uuid = UUID.randomUUID().toString();
		return  uuid;
	}
	
	
	/**
	 * 获取当前时间，返回String字符串格式
	 * yyyy-MM-dd hh:mm:ss
	 * @return
	 */
	public static String createThisTime(){
		Date date = new Date();
		SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		return dateFormat.format(date).toString();
	}
	
	
	/**
	 *   转换为日期格式并且计算出年龄
	 * @param birthDay
	 * @return
	 * @throws ParseException 
	 * @throws Exception
	 */
	public static  String getAge(String strDate) throws ParseException{
		 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		 Date birthDay = sdf.parse(strDate);
	    Calendar cal = Calendar.getInstance(); 
	    if (cal.before(birthDay)) { //出生日期晚于当前时间，无法计算
	        throw new IllegalArgumentException(
	                "The birthDay is before Now.It's unbelievable!");
	    }
	    int yearNow = cal.get(Calendar.YEAR);  //当前年份
	    int monthNow = cal.get(Calendar.MONTH);  //当前月份
	    int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); //当前日期
	    cal.setTime(birthDay); 
	    int yearBirth = cal.get(Calendar.YEAR);
	    int monthBirth = cal.get(Calendar.MONTH);
	    int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);  
	    Integer age = yearNow - yearBirth;   //计算整岁数
	    if (monthNow <= monthBirth) {
	        if (monthNow == monthBirth) {
	            if (dayOfMonthNow < dayOfMonthBirth) age--;//当前日期在生日之前，年龄减一
	        }else{
	            age--;//当前月份在生日之前，年龄减一
	        }
	    } 
	   return age.toString(); 
	}
	
	/**
	 * 随机生成文件名称
	 * 名称当前时间+随机数+文件后缀名
	 * 
	 */
	public static String returnPrefixSuffixName(String fileName) {
		long time = new Date().getTime() + Math.round(Math.random() * 1000);  //生成随机数
        String prefix = time + "";  //类型转换
		String[] strArray = fileName.split("\\.");
        int suffixIndex = strArray.length -1;
		String suffix =  "."+strArray[suffixIndex];  //生成文件后缀名
		return prefix+suffix;
	}
	
	
	/** 
	* 判断是linux系统还是其他系统 
	* 1.苹果  2.windows   3.linux
	*/ 
	public static String isLinux(String type) { 
		String osName = System.getProperty("os.name");
        System.out.println(osName);
        if (osName.startsWith("Mac OS")) {
            // 苹果
        	return "/usr/webImg/abr/"+type+"/";
        } else if (osName.startsWith("Windows")) {
            // windows
        	return  "F:/webImg/abr/"+type+"/";
        } else {
            // unix or linux
        	return "/usr/webImg/abr/"+type+"/";
        }
	}
	
	/**
     * 将HH:mm:ss时间格式转换成分钟数
     * @param time
     * @return 不足一分钟算一分钟
     */
	@SuppressWarnings("deprecation")
    public static Integer getMinutesTime(String time){
        SimpleDateFormat sdf= new  SimpleDateFormat("HH:mm:ss");
        try {
            Date start = sdf.parse(time);
            int hours = start.getHours();
			int minutes = start.getMinutes();
            int seconds = start.getSeconds();
            if (hours!=0){
                int hM = hours * 60;
                if(seconds!=0){
                    int lastTime=hM+minutes+1;
                    return lastTime;
                }else
                {
                    int lastTime=hM+minutes;
                    return lastTime;
                }
            }else{
                if(seconds!=0){
                    int lastTime=minutes+1;
                    return lastTime;
                }else
                {
                    int lastTime=minutes;
                    return lastTime;
                }
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }
	
	/**
     * 日期字符串截取
     */
	public static String dataStringSub(String str){
		if(str.length()>11){		//判断字段如果过长截取字段长度返回展示
			str = str.substring(0,10);
		}
		return str;
	}
	
	
	/**
     * 解析base64加密后的html文本并且判断长度大于多少进行截取
     */
	public static String analysisContent(String str){
		str = str.replaceAll("</?[^>]+>", "").replaceAll("\\s*|\t|\r|\n", "").replaceAll("&nbsp;", "").replaceAll("&gt;", "").replaceAll("　　","");
		if(str.length()>40){		//判断字段如果过长截取字段长度返回展示
			str = str.substring(0,40)+"...";
		}
		return str;
	}
	
	/**
	 * 获取文件后缀名判断是否是图片格式
	 * 
	 */
	public static int fileNmaeIsImgOrMp4(String fileAdd){
		if(fileAdd!=null&&fileAdd!=""){
			File file = new File(fileAdd);
	        String fileName = file.getName();
	        String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
    	    if(!"bmp".equals(suffix)&&!"png".equals(suffix)&&!"gif".equals(suffix)&&!"jpg".equals(suffix)&&!"jpeg".equals(suffix)){  //根据后缀，判断是否符合图片格式
		        return 1;   //视频格式
		   }else{
			   return 2;   //图片格式
		   }
		}else{
			return 0;		//null
		}
	}
	
	
	/**
     * 判断文字大于多少，进行截取返回
     */
	public static String stringLength(String str,int length){
		if(str.length()>length){		//判断字段如果过长截取字段长度返回展示
			str = str.substring(0,length)+"...";
		}
		return str;
	}
	

}
